home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Magnum One
/
Magnum One (Mid-American Digital) (Disc Manufacturing).iso
/
d6
/
glazer.arc
/
DEPGROWS.BAS
< prev
next >
Wrap
BASIC Source File
|
1988-10-07
|
3KB
|
67 lines
100 'Savings With Growing Deposits ("DEPGROWS")
110 CLS
120 COLOR 0,15 : PRINT "Savings With Growing Deposits" : COLOR 15,0
130 DEFDBL A-Z
140 DEFINT M-N
150 'Define function to convert annual rate to periodic rate
160 DEF FNCONV (V) = (1 + V / 100) ^ (1 / NPY) - 1
170 MONEYFMT$ = "$$##,###,###.##"
180 ' Let user select type of result
190 PRINT
200 PRINT "Select desired result:"
210 PRINT
220 PRINT "1 - Initial deposit"
230 PRINT "2 - Rate of growth in deposits"
240 PRINT "3 - Final balance"
250 PRINT
260 INPUT "Result number: ", RESULT
270 IF RESULT < 1 OR RESULT > 3 THEN PRINT "Select 1-3 only" : GOTO 210
280 PRINT
290 ' Let user enter data
300 PRINT "Do not enter dollar signs or commas"
310 PRINT
320 IF RESULT <> 1 THEN INPUT "Initial deposit: ", PV
330 IF RESULT <> 2 THEN INPUT "Annual growth rate in deposit (in percent): ", GROWTHRATE
340 IF RESULT <> 3 THEN INPUT "Savings goal: ", FV
350 INPUT "Annual interest rate (in percent): ", AR
360 INPUT "Number of periods: ", NPERIODS
370 INPUT "Number of periods per year: ", NPY
380 INPUT "Marginal tax rate (in percent): ", TAXRATE
390 INPUT "Annual inflation rate (in percent): ", INFLATION
400 PRINT
410 ' Compute periodic rates
420 PR = FNCONV (AR) 'Periodic interest rate
430 PR = PR * (1 - TAXRATE / 100) 'After-tax interest rate
440 GR = FNCONV (GROWTHRATE) 'Periodic growth in deposit
450 INFLATION = FNCONV (INFLATION) 'Periodic inflation rate
460 FV = FV * (1 + INFLATION) ^ NPERIODS
470 ON RESULT GOTO 490, 540, 690
480 ' Result 1: Find required initial deposit
490 PV = FV * (PR - GR) / (1 + PR)
500 IF PR <> GR THEN PV = PV / ( (1 + PR) ^ NPERIODS - (1 + GR) ^ NPERIODS) ELSE PV = FV * (1 + PR) ^ -NPERIODS / NPERIODS
510 PRINT "Required initial deposit: "; USING MONEYFMT$; PV
520 END
530 ' Result 2: Required growth in deposits
540 GRLOWER = -.5
550 GRUPPER = .5
560 WHILE ABS (GRUPPER - GRLOWER) > .00001
570 TRIALGR = (GRUPPER + GRLOWER) / 2
580 IF PR <> TRIALGR THEN TRIALFV = PV * (1 + PR) / (PR - TRIALGR)
590 TRIALFV = TRIALFV * ( (1 + PR) ^ NPERIODS - (1 + TRIALGR) ^ NPERIODS)
600 IF PR = TRIALGR THEN TRIALFV = NPERIODS * PV * (1 + PR) ^ NPERIODS
610 IF TRIALFV > FV THEN GRUPPER = TRIALGR ELSE GRLOWER = TRIALGR
620 WEND
630 GROWTHRATE = (GRUPPER + GRLOWER) / 2
640 GROWTHRATE = ( (1 + GROWTHRATE) ^ NPY - 1) * 100
650 PRINT "Required annual growth rate in deposit: ";
660 PRINT USING "###.##_%"; GROWTHRATE
670 END
680 ' Result 3: Find final balance
690 IF PR <> GR THEN FV = PV * (1 + PR) / (PR - GR)
700 IF PR <> GR THEN FV = FV * ( (1 + PR) ^ NPERIODS - (1 + GR) ^ NPERIODS)
710 IF PR = GR THEN FV = NPERIODS * PV * (1 + PR) ^ NPERIODS
720 FV = FV * (1 + INFLATION) ^ -NPERIODS 'Adjust for inflation
730 PRINT
740 PRINT "Final balance: "; USING MONEYFMT$; FV
750 END